package com.kuyu.dto;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.kuyu.dataobject.OrderDetail;
import com.kuyu.enums.OrderStatusEnum;
import com.kuyu.enums.PayStatusEnum;
import com.kuyu.utils.serializer.Date2LongSerializer;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 在该包下编写的类为数据传输对象，主要为service层提供数据服务
 * OrderDTO类：是定义订单信息和每个订单对应的商品信息
 */
@Data
//该注解是不返回null的字段
@JsonInclude(JsonInclude.Include.NON_NULL)
public class OrderDTO {
    /** 订单id. */
    private String orderId;

    /** 买家名字. */
    private String buyerName;

    /** 买家手机号. */
    private String buyerPhone;

    /** 买家地址. */
    private String buyerAddress;

    /** 买家微信Openid. */
    private String buyerOpenid;

    /** 订单总金额. */
    private BigDecimal orderAmount;

    /** 订单状态, 默认为0新下单. */
    private Integer orderStatus;

    /** 支付状态, 默认为0未支付. */
    private Integer payStatus;

    /** 创建时间. */
    @JsonSerialize(using = Date2LongSerializer.class)
    private Date createTime;

    /** 更新时间. */
    @JsonSerialize(using = Date2LongSerializer.class)
    private Date updateTime;

    List<OrderDetail> orderDetailList;
    @JsonIgnore //忽略该字段返回
    public String getOrderStatusEnum() {
        return OrderStatusEnum.getName(orderStatus);
    }

    @JsonIgnore
    public String getPayStatusEnum() {
        return PayStatusEnum.getName(payStatus);
    }
}
